// 定义数组
let arr = [10, 11]
console.log("arr:", arr)

// 向数组末尾添加一个或多个元素，并返回修改后数组的长度
let arrLength = arr.push(12, 13)
console.log("arr:", arr)
console.log("arrLength:", arrLength)

// 向数组开头添加一个或多个元素，并返回修改后的数组长度
arrLength = arr.unshift(8, 9)
console.log("arr:", arr)
console.log("arrLength:", arrLength)

// 删除数组中第一个元素，并返回被删除元素
let delElement = arr.shift()
console.log("arr:", arr)
console.log("delElement:", delElement)

// 删除数组最后一个元素，并返回被删除元素
delElement = arr.pop()
console.log("arr:", arr)
console.log("delElement:", delElement)

// 删除元素，并返回包含被删除元素的数组
// splice(要删除元素的下标,要删除的元素个数)
let delArr = arr.splice(0, 2)
console.log("arr:", arr)
console.log("delArr:", delArr)

// 逆序数组
arr.reverse()
console.log("arr:", arr)

// 数组排序 字符串按字典序排序
let arr2 = ["ac", "aa", "ab"]
arr2.sort()
console.log("arr2:", arr2)
// arr2: [ 'aa', 'ab', 'ac' ]

// 数组排序 默认使用字符串的排序规则(字符串中的字符逐位比较)
let arr3 = [1, 3, 2, 5, 3, 11, 10]
arr3.sort()
console.log("arr3:", arr3)
/*
arr3: [
  1, 10, 11, 2,
  3,  3,  5
]
*/
// 数组排序 自定义排序规则
arr3.sort((a, b) => a - b)
// a-b 升序排序 b-a 降序排序
console.log("arr3:", arr3)
/*
arr3: [
  1,  2,  3, 3,
  5, 10, 11
]
*/

// 筛选符合条件的元素，返回一个新的数组
let arr4 = [10, 11, 12, 13, 14, 15]
let newArr = arr4.filter((value, index) => value > 12)
console.log("newArr:", newArr)
// newArr: [ 13, 14, 15 ]

// 将多个数组或值合并为一个新数组
let arr5 = ["十六", "十七", "十八"]
newArr = arr4.concat(arr5, 1, 2)
console.log("newArr:", newArr)
/*
newArr: [
  10,     11,     12,
  13,     14,     15,
  '十六', '十七', '十八',
  1,      2
]
*/

// 使用for...of循环遍历数组
let arr6 = ["Hello", "Dcsgo", 666]
console.log("arr6 for of:")
for (let item of arr6) {
    console.log(item)
}
/*
arr6 for of:
Hello
Dcsgo
666
*/

// 使用forEach遍历数组
arr6.forEach((value, index) => {
    console.log("value:", value, "index:", index)
})
/*
value: Hello index: 0
value: Dcsgo index: 1
value: 666 index: 2
*/